package com.qf.fmall.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RestController;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.ApiSelectorBuilder;
import springfox.documentation.spring.web.plugins.Docket;

/**
 * 添加Swagger的配置类，用来定制接口文档页面上的显示内容
 */
@Configuration
public class SwaggerConfig {

    @Bean
    public Docket cartDocket(){
        // 创建用来配置swagger的对象
        Docket docket = new Docket(DocumentationType.SWAGGER_2);

        // 常用的配置信息
        // 定制页面上接口文档的显示信息
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("FMALL锋迷商城购物车")
                .version("1.1")
                .description("购物车模块接口文档")
                .contact(new Contact("dongjl", "http://www.mobiletrain.org/", "dong_jl@163.com"))
                .build();
        docket.apiInfo(apiInfo);
        // 配置哪些接口进行文档生成
        // 选择com.qf.fmall.index包下的Controller进行文档生成
        docket.select()
//                .apis(RequestHandlerSelectors.withMethodAnnotation(GetMapping.class))
//                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
                .apis(RequestHandlerSelectors.basePackage("com.qf.fmall.shopcart"))
//                .paths(PathSelectors.regex("/user.*"))
                .build(); // 注意，需要调用一下build方法，接口选择才生效

        // 设置接口文档分组
        docket.groupName("shopcart");

        return docket;
    }

    @Bean
    public Docket userDocket(){
        // 创建用来配置swagger的对象
        Docket docket = new Docket(DocumentationType.SWAGGER_2);

        // 常用的配置信息
        // 定制页面上接口文档的显示信息
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("FMALL锋迷商城！！！")
                .version("1.1")
                .description("这是一个前后端分离项目的后端接口项目！！！")
                .contact(new Contact("dongjl", "http://www.mobiletrain.org/", "dong_jl@163.com"))
                .build();
        docket.apiInfo(apiInfo);
        // 配置哪些接口进行文档生成
        // 选择com.qf.fmall.index包下的Controller进行文档生成
        docket.select()
//                .apis(RequestHandlerSelectors.withMethodAnnotation(GetMapping.class))
//                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
                .apis(RequestHandlerSelectors.basePackage("com.qf.fmall.user"))
//                .paths(PathSelectors.regex("/user.*"))
                .build(); // 注意，需要调用一下build方法，接口选择才生效

        // 设置接口文档分组
        docket.groupName("user");

        return docket;
    }

    @Bean
    public Docket docket() {

        // 创建用来配置swagger的对象
        Docket docket = new Docket(DocumentationType.SWAGGER_2);

        // 常用的配置信息
        // 定制页面上接口文档的显示信息
        ApiInfo apiInfo = new ApiInfoBuilder()
                .title("FMALL锋迷商城")
                .version("1.1")
                .description("这是一个前后端分离项目的后端接口项目")
                .contact(new Contact("dongjl", "http://www.mobiletrain.org/", "dong_jl@163.com"))
                .build();
        docket.apiInfo(apiInfo);
        // 配置哪些接口进行文档生成
        // 选择com.qf.fmall.index包下的Controller进行文档生成
        docket.select()
                .apis(RequestHandlerSelectors.basePackage("com.qf.fmall.index"))
                .build(); // 注意，需要调用一下build方法，接口选择才生效

        // 设置接口文档分组
        docket.groupName("index");

        return docket;
    }

}
